home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-20 / spkdsn_2.zip / ALPHA.ZIP / PLCV18.BAS < prev    next >
BASIC Source File  |  1987-01-01  |  4KB  |  115 lines

  1.  
  2. 10 REM Copyright 1987, Arnold B. Krueger, Grosse Pointe Woods, MI. 48236
  3. 20 DEF FNPHLP1(W,WC,D) =  ATN(W/WC)
  4. 30 DEF FNPHHP1(W,WC,D) =  ATN(WC/W)
  5. 40 DEF FNPHLP2(W,WC,D) = -ATN( D*W /(WC*(1.000001-(W/WC)^2 ) ) ) + PI*(W>WC)
  6. 50 DEF FNPHHP2(W,WC,D) =  ATN( D*WC/(W *(1.000001-(WC/W)^2 ) ) ) - PI*(W<WC)
  7. 60 DEF FNAMLP1(W,WC,D) = 1 / SQR(1!+(W/WC)^2)
  8. 70 DEF FNAMHP1(W,WC,D) = 1 / SQR(1!+(WC/W)^2)
  9. 80 DEF FNAMLP2(W,WC,D) = 1 / SQR(1+(W/WC)^4+(D*D-2!)*(W/WC)^2)
  10. 90 DEF FNAMHP2(W,WC,D) = 1 / SQR(1+(WC/W)^4+(D*D-2.000001)*(WC/W)^2)
  11. 100 DEF FNDBV(AMP)      = 20!*LOG(AMP)*LOGCONV
  12. 110 DEF FNPHD(RAD)     = 180!*RAD/PI
  13. 120 DEF FNSUMA(AA,AB,PA,PB) = SQR((AA*SIN(PA)+AB*SIN(PB))^2 + (AA*COS(PA)+AB*COS(PB))^2 )
  14. 130 DEF FNSUMPW(AA,AB,PA,PB) = SQR((AA*AA*SIN(PA)+AB*AB*SIN(PB))^2 +                                               (AA*AA*COS(PA)+AB*AB*COS(PB))^2 )
  15. 140 DEF FNSUMPN(AA,AB,PA,PB) =   AA*SIN(PA)+AB*SIN(PB)
  16. 150 DEF FNSUMPD(AA,AB,PA,PB) =   AA*COS(PA)+AB*COS(PB)
  17. 160 DEF FNDIRF(AA,AB,PA,PB) = ABS((SIN((PA-PB))*(((AA >= AB)*AB/AA)+((AB > AA)*AA/AB)  )))
  18. 170 PI = ATN(SQR(3!))*3
  19. 180 LOGCONV=1!/LOG(10!)
  20. 190 LOGCONV=1!/LOG(10!)
  21. 200 DIM FREQT(20)
  22. 210 FREQT(1)=20:FREQT(2)=22:FREQT(3)=25:FREQT(4)=28:FREQT(5)=32:FREQT(6)=36
  23. 220 FREQT(7)=40:FREQT(8)=44:FREQT(9)=50:FREQT(10)=56:FREQT(11)=64:FREQT(12)=72
  24. 230 FREQT(13)=80:FREQT(14)=88:FREQT(15)=100:FREQT(16)=112
  25. 240 FREQT(17)=128:FREQT(18)=144:FREQT(19)=160:FREQT(20)=180
  26. 250 SCREEN 2 : KEY OFF : CLS
  27. 260 XS = ( LOG(20000)-LOG(20) )*LOGCONV
  28. 270 REM Driver parameters:
  29. 280 N$ = "Cerwin-Vega 18 B4"
  30. 290 F1 = 25!
  31. 300 Q1 = 1.307
  32. 310 F2 = 25! 
  33. 320 Q2 = .543
  34. 330 F3 = 1300
  35. 340 Q3 = .15
  36. 350 W1 = 2!*PI*F1
  37. 360 D1  = 1!/Q1
  38. 370 W2 = 2!*PI*F2
  39. 380 D2 = 1!/Q2
  40. 390 W3 = 2!*PI*F3
  41. 400 D3 = 1!/Q3
  42. 410 X = 1
  43. 420    LINE(52,1)-(639,1)
  44. 430    LINE(52,180)-(639,180)
  45. 440 FOR X = 52 TO 640 STEP 16
  46. 450    FOR ROW = 22.5 TO 157.5 STEP 22.5
  47. 460       LINE(X,ROW)-(X+1,ROW)
  48. 470    NEXT ROW
  49. 480 NEXT X
  50. 490 TOGGLE = 0
  51. 500 FOR OCT  = 0 TO 4  
  52. 510 DECADE = 10^OCT
  53. 520 XSCALE = 75!*(LOG(20!*DECADE)-2.3)
  54. 530 LINE(XSCALE,1)-(XSCALE,180)
  55. 540 XSCALE = 75!*(LOG( 50!*DECADE)-2.3)
  56. 550 LINE(XSCALE,1)-(XSCALE,180)
  57. 560 XSCALE = 75!*(LOG(100!*DECADE)-2.3)
  58. 570 LINE(XSCALE,1)-(XSCALE,180)
  59. 580 XSCALE = XSCALE + 1
  60. 590 LINE(XSCALE,1)-(XSCALE,180)
  61. 600 FOR NOTE = 1 TO 20
  62. 610   F = FREQT(NOTE)*DECADE
  63. 620   IF F > 50000! THEN GOTO 830
  64. 630   W = 2!*F*PI
  65. 640   XP = 75!*(LOG(F)-2.3)
  66. 650   Y  = FNAMHP2(W,W1,D1)*FNAMHP2(W,W2,D2)*FNAMLP2(W,W3,D3)
  67. 660   YD = FNDBV(Y)
  68. 670   YP = (20!-YD)*4.5
  69. 680   IF YP<10 THEN YP = 10
  70. 690   IF YP>180 THEN YP = 180
  71. 700   IF OCT=0 THEN IF NOTE = 1 THEN GOTO 720
  72. 710   LINE(XP,YP)-(OLDX,OLDY)
  73. 720   REM OLDX = XP
  74. 730   OLDY = YP
  75. 740   Y = FNPHHP2(W,W1,D2)+FNPHHP2(W,W2,D2)+FNPHLP2(W,W3,D3)
  76. 750   YD = FNPHD(Y)
  77. 760   YQ = 90-YD/2
  78. 770   IF OCT=0 THEN IF NOTE=1 THEN GOTO 800
  79. 780   IF TOGGLE = 0 THEN TOGGLE = 1 ELSE TOGGLE = 0
  80. 790   IF TOGGLE = 0 THEN LINE(XP,YQ) - (OLDX,OLDYQ)
  81. 800   OLDYQ = YQ
  82. 810   OLDX = XP
  83. 820 NEXT NOTE
  84. 830 NEXT OCT
  85. 840 LOCATE  1,1
  86. 850 PRINT USING "#### d";180;
  87. 860 LOCATE 23,1
  88. 870 PRINT USING "#### d";-180;
  89. 880 LOCATE 12,1
  90. 890 PRINT USING "### dB";0!;
  91. 900 LOCATE  6,1
  92. 910 PRINT USING "### dB";10!;
  93. 920 LOCATE 17,1
  94. 930 PRINT USING "### dB";-10!;
  95. 940 LOCATE 24,4
  96. 950 PRINT USING "### Hz";20!;
  97. 960 LOCATE 24,19
  98. 970 PRINT USING "### Hz";100!;
  99. 980 LOCATE 24,40
  100. 990 PRINT USING " ## kHz";1!;
  101. 1000 LOCATE 24,62
  102. 1010 PRINT USING "### kHz";10!;
  103. 1020 LOCATE 24,70
  104. 1030 PRINT USING "### kHz";20!;
  105. 1040 LOCATE 2,40
  106. 1050 PRINT USING "          &          ";N$;
  107. 1060 LOCATE 3,40
  108. 1070 PRINT USING "     &";"Amplitude:       Phase:          ";
  109. 1080 LINE(450,20)-(465,20)
  110. 1090 LINE(550,20)-(565,20),,,&HF0F0
  111. 1100 LOCATE 4,20
  112. 1110 PRINT USING "Fl: ##### Q1: #.## F2: ##### Q2: #.## F3: ##### Q3: #.##";F1;Q1;F2;Q2;F3;Q3;
  113. 1120 LOCATE 2,1
  114. 1130 END
  115.